home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Frameworks / Hsoi's App Shell 1.0a4 / 0.9a2->1.0a1->1.0a2 notes next >
Encoding:
Text File  |  1996-03-21  |  34.2 KB  |  611 lines  |  [TEXT/CWIE]

  1. Friday July 7, 1995 @ 1:07pm
  2.  
  3. *+*+*+*+*+*+*+*+*+*+*+*+*+*+*    THINGS TO DO    *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
  4.  
  5. This is a listing of the things that still need to get done before the next
  6. release of the shell (0.9a3).  No particular order, just stuff to impliment, fix,
  7. brush up, etc etc.
  8.  
  9. •    General brushing up of code:  remove redundant stuff, optimize, go through snippets
  10.     that i just copied and pasted and clean it up to work right (like the modal dialog
  11.     stuff)
  12.     
  13.     Also, just make sure everything works right and acts like it should.  Plus, make
  14.     sure things don't work one way here and anothe way there (if they're doing
  15.     the same sort of stuff).  Consistancy!
  16.  
  17. •    Comment the code:  remove verbose stuff, rewrite for clarity and conciseness, make
  18.     sure all things are commented well.  This goes along with writing the docs
  19.  
  20. •    some Balloon help (no way do i want to impliment balloon's everywhere, but just
  21.     enough so all balloon types are covered and people can see how to do them)
  22.  
  23. •    AppleScript support...fully scriptable, fully recordable, and maybe even some of
  24.     my own things.  I have some stuff (taken straight from the WASTE Demo) but
  25.     that's not enough.
  26.  
  27. •    Edition Manager support
  28.  
  29. •    Get that little prefs size popup/editbox problem fixed, and make the dialog filter
  30.     filter out non-numeric keys
  31.  
  32. •    Redo the prefs dialogs for better cosmetics (make it look better).  Add a "save"
  33.     button to immediately save the prefs to the prefs file.  Add a "Revert" command
  34.     and/or a "Factory Settings" button.  Also, develop magazine had a great article
  35.     on writing multi-pane dialogs.  I might want to scrap my prefs code as it is
  36.     now and redo things with that...
  37.  
  38. •    Impliment a "Find" dialog to find text.  This'll give the modeless dialog box a
  39.     purpose in life.
  40.  
  41. •    Make the dialog stuff in HsoiEventLoop() a little more robust (but not necesary
  42.     until the Find dialog gets implimented really)
  43.  
  44. •    Use PickColor() instead of GetColor().  And I think PickColor() is a System 7.5
  45.     thing, so we'll have to check for this.  Marco said he'd send me his Style code
  46.     so we can wait until then to see how he did it
  47.     
  48.     on this note, should the prefs dialog maybe impliment a popup menu for the color?
  49.     just like the size popup...you can pick from 7 colors (like the color menu) or
  50.     pick other (and then GetColor).  still tho, have the little color box there to
  51.     easily display the chosen color
  52.  
  53. •    Check how well color works on b/w and grayscale monitors
  54.  
  55. •    Going with my desire for consistancy (especially with naming conventions), variable
  56.     names in functions (and globals and statics) should be renamed so all is consistant
  57.     (g for global, s for static, don't call it windowPtr and windowP and wp in different
  58.     places, call it like theWindow or something in every place)
  59.  
  60. •    Documentation
  61.  
  62. •    Rewrite the licensing agreement.  See the July 95 MacTech for ideas. (mostly, i seem
  63.     really anal about things...loosen up)
  64.  
  65. •    Better and more robust error handling.  Maybe even also put in debug stuff, like
  66.     #ifdef DEBUG, then do things with DebugStr or ASSERTS or whatever.
  67.  
  68.     NOTE!  error handling is pretty much rewritten and improved upon, but I'm sure that
  69.     it could always be better.  So, the only thing for this bullet-point to really
  70.     stil do is maybe add that DEBUG stuff.
  71.  
  72. •    make sure that we always handle possible error checking situations.  i know i
  73.     don't check in every place needed, and it's especially important in low memory
  74.     situations (e.g. memFullErr's).  not only report possible low memory or not enough
  75.     memory situations to users, but also see about implimenting a good low mem
  76.     handling scheme (snag a good portion of the app heap to just hold, lock it
  77.     hi in memory, if we get low on memory, free it up, etc)
  78.  
  79. •    Make sure that the cool about box code is as stand alone as possible.  Meaning:
  80.     if i just take the file "HAS CoolAboutBox.c" and drop it into another project
  81.     (and make the proper mods to my menu stuff to allow for opt-click), it'd run
  82.     just fine...no need to make sure they have the header files (#ifndefs), no need
  83.     to link to other code, etc
  84.     
  85. •    xDEFs
  86.  
  87. •    Get the PDOC AppleEvent (Print) working!
  88.  
  89. •    Text to speech stuff
  90.  
  91. •    PICTs (or icons or whatever) for buttons
  92.  
  93. •    Drag and drop is working (all of the WASTE Object Handlers are working).  I need to
  94.     impliment the rest of the possible stuff (like those sound routines).
  95.     
  96. •    Spruce up the regular about box a lot more...it's really boring.  Also, rewrite
  97.     the help file a bit more....take what's in there and use that for various
  98.     README's and docs that'll be written out and offline.
  99.     
  100.     Things should be like this:
  101.     
  102.     Help:    actually give online help...the help will be nowhere as robust as any
  103.             of the docs that i write, but enough to get people around while running
  104.             the app, plus point out neat=o things that you can do (like it's not
  105.             obivous that the notification manager will kick in, so note that, etc).
  106.     
  107.     CoolAboutBox:    stuff that needs to be dealt with for the Shell itself (i.e. if
  108.             HAS is used in writing some software project, things needed for that.  like
  109.             to give info, to give rule and reg info (not only mine, but also so that
  110.             i cover ones i need to like for WASTE)).
  111.     
  112.     About:    Actual about stuff, like credits (copyright stuff, etc), registration info,
  113.             try not to be redundant.
  114.  
  115. •    don't forget to update the comments, thanx and other stuff in the documentation
  116.     helps and cool about box.  i remembered to add in the 1996 to the copyright
  117.     stuff (love this new year stuff!).  But one thing that should definately be
  118.     added is a comment about people aquiring code from Tom Bender.  a great
  119.     learning tool.
  120.  
  121. •    redo the structure of the code and files.  try to make things more standalone.
  122.     like how Tom Bender and John Norstad did things.  functions that are totally
  123.     reusable (anyone could use/reuse them in any situation, like HsoiForgetHandle())
  124.     put them in their own files.  functions that are partially reusable (like
  125.     perhaps HsoiGetWindowWE() or something..basically, functions that are reusable
  126.     as is, but might rely on something else, like WASTE) put them somewhere else.
  127.     and functions that are totally HAS specific put somewhere else.  basically,
  128.     try to make it more like a shell.
  129.     
  130.     this also means, no more big bulk header files...each file would have it's
  131.     own header file (HASFiles.c HASFiles.h HASUtilFiles.c HASUtilFiles.h), and
  132.     a general restructuring of the entire layout of HAS.
  133.     
  134.  
  135.  
  136. *+*+*+*+*+*+*+*+*+*+*+*+*+*+*    THINGS DONE        *+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
  137.  
  138. These are things that have been done sine the 0.9a2 release of the app shell.
  139.  
  140. ADDED:    All keywords (mostly variable names) should now appear in color (green)
  141.  
  142. ADDED:    All HAS files written or modified enough by me (e.g. main.c, ZoomCode.c) have
  143.         been renamed to HAS xxx.c (e.g. HAS Main.c, HASZoomCode.c).  This is to allow
  144.         for easy identification of Shell files.  Things with their own naming convention
  145.         (e.g. WASTE) have been left alone
  146.  
  147. ADDED:    All HAS functions have been renamed to Hsoixxx() (e.g. Initialize() to HsoiInitialize())
  148.         This is to allow for easy identification of non-toolbox functions.  If it's not
  149.         a toolbox call, it should have some sort of prefix on it (Hsoi for me, WE for WASTE)
  150.         That which can't be renamed but isn't toolbox is noted with a comment as to what
  151.         it is
  152.         
  153. PARTIALLY ADDED:    #ifndef's added in some places to allow for conditional #includes of
  154.         header files (depending on the precompiled header).  Need to make this fully done
  155.  
  156. FIXED:    "Save Changes" Alert alert stage info has been fixed to beep properly
  157.  
  158. ADDED:    About box now plays a random sound when brought up (no point other than to
  159.         show a neat randomization technique)
  160.  
  161. REMOVED:    All references to Hsoi's App SHOP.  Should all be SHELL now
  162.  
  163. PARTIALLY ADDED:    #ifndef's added in some places to conditionally #include or not
  164.         header files (depending on the precompiled header).  Need to get all the files
  165.         to be like this
  166.  
  167. ADDED:    The movablemodal progress bar now can be dismissed via cmd-.
  168.  
  169. ADDED:    Preferences!  THanx to John Norstad and the NewsWatcher source code.
  170.  
  171. FIXED:    Windows now deactivate properly when the cool about box is brought up
  172.  
  173. CHANGED:    Any header-type things for WASTE (like IC support) moved to the precompiled
  174.         header instead of modifying WASTEIntf.h
  175.  
  176. CHANGED:    With the above, if a file is now read-only, the caret is hid
  177.  
  178. FIXED:    Window sizing now works right! (finally)  When CreateWindow() is called, windows
  179.         properly are sized for WYSIWYG, staggering of subsequent windows works right (and
  180.         is handled by the toolbox), printing routines modified to be consistant.
  181.         
  182.         With further progress on the shell (i got things working right, then changed
  183.         a bunch of stuff, trashed old ways, etc etc), window sizing again works right.
  184.         plus, window zooming is smart now.
  185.         
  186. CHANGED:    header files reorganized, constants are now enums instead of #defines. Macros
  187.         brushed up to display conform to this.  constants and stuff renamed with prefixes
  188.         to make things consistant
  189.  
  190. ADDED:    Notification Manager support.  Not globally handled (like for anything and everything)
  191.         but for the movable modal dialog, if it completes and HAS is in the background,
  192.         notification occurs.  it's not total and great NM support, but demonstrates
  193.         how it works.
  194.         
  195. ADDED:    If there is no printer selected (should never be a problem, but i ran into it
  196.         on a brand new never used nor touched before PowerMac), window sizing stuff
  197.         (being based upon the printer paper/page) is initialized to other values so
  198.         you can see the window you create
  199.  
  200. ADDED:    Splash screen
  201.  
  202. ADDED:    "Registration" dialog
  203.  
  204. ADDED:    A Show Clipboard window.  since it's just a WASTE instance, it will show anything a
  205.         WASTE window can (embedded objects, PICTs, snd, SOUP, etc). STILL TO DO!  add
  206.         contents identifiers so users can know what's on the clipboard (just like showing
  207.         the clipboard in the Finder)
  208.  
  209. FIXED:    Drag and drop now works right for PICT, snd, hfs and various other SOUP stuff.
  210.         Still need to get other WASTE Object Handler routines implimented, and also
  211.         see about patching the HFS stuff to optionally read in the file instead of
  212.         inserting a spec (see above notes).
  213.  
  214. FIXED:    If the user double-clicks (opens) the preferences file, HAS will no longer attempt to 
  215.         read in the prefs file as if it was a "regular document".  Going along with this, 
  216.         the error handlers are much better now (more readable and userfriendly) so that if
  217.         a file that is not TEXT nor ttro is trying to be read in, the user gets a more
  218.         informative message that it's not a TEXT nor ttro file.
  219.         
  220.         Question:  tho the document isn't read in, a window is still created (and becomes
  221.         and untitled window).  Should this be allowed to happen?  I have mixed feelings,
  222.         but probably not (probably just call HsoiDestroyWindow() or something in there).
  223.  
  224. FIXED:    Splash screen mouse clicks no longer click through to the Finder (or whatever).  Added
  225.         a couple FlushEvent() calls before and after !Button() was called in HsoiDoSplashScreen()
  226.  
  227. FIXED:    A strange "bug".  In HsoiDoOpen(), i typoed; sometimes the variable was modalfilter (as
  228.         i declared) and sometimes modalFilter.  The MW C 68k compiler NEVER caught it, but the
  229.         PPC compiler did.  Changed all things to be more workable and consistant.
  230.  
  231. ADDED:    More Gestalt checks (and global Boolean's, if necessary, for checks on system manager
  232.         availability).  Most notably, added edition manager checks and notification checks.
  233.  
  234. FIXED:    Clicks to windows in the background that have a selection range are not automatically
  235.         brought to the front now, if a drag is started.  Bascailly, if you have a window with
  236.         a selection range, this window is in the back (!FrontWindow()), you click in the
  237.         selection range on the back window and start a drag, the window remains in the back
  238.         and the drag is allowed to occur.  My problem was that in the event dispatcher, I
  239.         first would check if window != FrontWindow() SelectWindow( window ) else HsoiDoContentClick()
  240.         But that was wrong.  I changed it so that SelectWindow() is now only called if
  241.         HsoiDoContentClick() returns TRUE.  This allows for better drag-and-drop stuff.
  242.         I also (tho dunno if this affected the thing, but probably did) changed something in
  243.         HsoiDoContentClick from: PtInRgn() & WaitMouseMoved()  : to : ... && ...   I figure
  244.         there was something in the P2C translation that i missed and did bit AND instead of boolean
  245.         AND
  246.  
  247. IMPROVED:    Error handling is more robust and user friendly (in terms of the error messages).
  248.         Errors are checked for more often, and unkosher situations are better dealt with
  249.         (e.g. if something was NIL, but not worth an error alert).
  250.  
  251. ADDED:    Marco Piovanelli's MovableModal Library 2.0.  This is a wonderfully small yet
  252.         effective way to handle movable modal dialogs.  I have it being used to handle the
  253.         "Other Font Size..." dialog box (yet another way to do a movable modal dialog).
  254.         I can't get the menu bar stuff to work, but the MovableModalDialog() call works great,
  255.         so I'll just stick with calling that and work on the menu bar stuff later
  256.         (i don't want the edit menu enabled anyways, at least until i get a more robust
  257.         filter working).
  258.  
  259. UPDATED:    Moved to CWASTE 1.1r16, which is the "final" release of CWASTE for a while.  it's
  260.         the port to bring CWASTE up to date with the final release of WASTE 1.1
  261.  
  262. ADDED:    In the other font size dialog, and in the prefs dialog stuff that deals with text
  263.         size, I attempted to make them robust enough to stop illegal font size entries before
  264.         the user would hit return, but that didn't work too well...it's not impossible, just
  265.         too difficult to bother with for the scope of this project right now (maybe later).
  266.         So, i just added something that if they hit OK or they try to move to another
  267.         dialog (in the prefs, they click on a new popup), the size is checked for...if it's
  268.         an illegal size, we vomit and don't let them progress until they fix it.
  269.         
  270. MODIFIED:    When a drag is performed from like Finder to app window (i.e. flavor type HFS),
  271.         if the data type is of type TEXT or ttro, the file will now be read into the
  272.         document window.  If of another type, an icon will be put into the document.
  273.         Essentially, HsoiTranslateDrag() was reduced to nothing, and HsoiMyReceiveHandler()
  274.         was made more robust.
  275.  
  276. FIXED:    In HsoiReadTextFile(), if a TEXT file is opened, and this file has a resource fork
  277.         (but no 'styl' and/or 'SOUP' resource...for example, a CW text file), it was putting
  278.         up a resNotFound error (since it did find a res fork but not these resources).  This
  279.         has been fixed so no errors are brought up and the file opens without a hitch.
  280.  
  281. UPDATED:    Moved to CW7 Gold/Academic.  Required a few changes: gSleepTime is now unsigned
  282.         long (instead of long); PB calls changed to new Sync/Async calls (using new routine
  283.         names); moved to WASTE 1.2a2.1
  284.  
  285. FIXED:    HsoiForgetResource() and HsoiForgetHandle() weren't ported right...fixed the bugs
  286.         there, should work fine now (else blame Marco *wink*).  Also, changed how
  287.         HsoiGetDialogItemRect() works (takes the rect as an argument now instead of
  288.         returning it).
  289.  
  290. REMOVED:    A check in the drag tracking and receiving handlers that checked for read-only
  291.         windows (and would reject the drag).  This functionality is already achieved by
  292.         WECanAcceptDrag() which is called by WETrackDrag() which is called by
  293.         HsoiMyTrackingHandler().  Just redundant code, no need for it.
  294.         
  295. UPDATED:    Moved to WASTE 1.2a3 (from the preliminary 1.2a3 distribution), WETabs 1.3.
  296.         Moving to WETabs 1.3 necessitated the removal of "HAS MarcoWETabs.c/.h" and
  297.         move from WETabs32.c to just WETabs.c.  Also, any calls to said such routines
  298.         and/or files were updated to reflect the new changes.
  299.  
  300. REMOVED:    Dean Yu's ZoomCode.  The main accessor routine (ZoomTheWindow()) took a
  301.         WindowPeek as an argument.  Since I'm working for Copland functionality, WindowPeek's
  302.         just can't exist.  It has been replaced by just good old straight toolbox calling
  303.         (and will remain as such until I either rewrite Yu's code or write my own "smart"
  304.         zoom code)
  305.  
  306. *NOTE*:    I've been attempting to make HAS as Copland compilant as possible, however it's
  307.         just not 100% possible yet since Apple hasn't even made their Universal Headers
  308.         100% Copland compilant yet.  There are just too many problems that can't be fixed
  309.         yet with STRICT macros turned on.  Here's the deal:  STRICT macros will _not_ be
  310.         left on as a normal thing.  However, they will be on to let me begin migrating
  311.         my code over to Copland.  That which I can start to port over I will (e.g. using
  312.         <xxx>Refs, using an accessor function if it exists).  But that which cannot
  313.         yet be ported will remain as it was, however a comment will be put by that line
  314.         of code saying it will be something that would break under STRICT macros. e.g.:
  315.         //COPLAND - the following line breaks under STRICT macros.
  316.  
  317. REDONE:    Due to much of the Copland rewrites, I totally trashed the old HsoiAdjustMenus().
  318.         I've rewritten it from scratch in a manner that I think is more logical and
  319.         makes life a little easier when it'd come to later expansion of the code.
  320.  
  321. MODIFIED:    'Hsoi' is the registered (with Apple) creator type for HAS.  I've now also
  322.         added another creator type for the shell: 'HSoi'.  This creator is used for
  323.         the preferences file (and ONLY the prefs file) to allow for the message string
  324.         resource to show if the prefs file is double-clicked on in the Finder.
  325.         (and this creator is also registered with Apple)
  326.  
  327. CHANGED, MODIFIED, and REMOVED:  James Walker's Show_help code.  I wanted to rewrite
  328.         Show_help to use WASTE instead of TextEdit.  Originally, i thought I could
  329.         keep a lot of the old integrity of Show_help intact, but i had to sacrifice
  330.         a lot of things....so, the help code resembles Show_help somewhat, but a lot
  331.         had to be changed (and in the future, I'd like to do things to make my help
  332.         code get back more towards the original Show_help, but who knows).  Also,
  333.         all the Show_help files and file structure has been removed...everything is
  334.         now in "HAS Help.c"
  335.  
  336. ADDED:    With the conversion of Show_help, i had to write some UniversalProcPtr's (UPP's)
  337.         for the callback routines.  I also added some #pragma's and stuff around
  338.         the code here and there to ensure struct alignment to 68k and in case someone
  339.         tried C++ compiles with the code (tho i've NO idea how well all this will work
  340.         under a C++ compile)
  341.  
  342. ADDED:    HsoiZoomWindow().  Taken pretty much right out of Inside Macintosh (with P->C
  343.         translation and Copland functionality added).  It acts the same as ZoomWindow,
  344.         but offers a slight diverence to deal with multiple monitor setups.  I still
  345.         want to have something that makes zooming to stdState go to an ideal document/
  346.         window size, but that'll be later (and will affect window creation, printing,
  347.         zooming, page setup, etc.)
  348.  
  349. UPDATED:    Moved to WASTE 1.2a4...the life of continual releases and keeping up
  350.         to date with them *smile*.  This required a few modifications:  calls to
  351.         WEContinuousStyle() now take a WEStyleMode variable type (just a typedef'ed
  352.         unsigned short) instead of a short.  For now (in case Marco changes things
  353.         in 1.2a5) i've just typecasted the calls to WEContinuousStyle() as an
  354.         unsigned short.  Also, there was a new macro in WASTEIntf.h for some
  355.         arrow key behaviors...i've added this macro to HAS HsoiHeaders.pch, but
  356.         left it #defined 0.
  357.  
  358. FIXED:    In the modal dialog, there was a user item proc installed to dim the
  359.         2nd edit text line.  This didn't work on PowerMacs cause it needed a
  360.         UPP (UserItemUPP) for this procedure.  Fixed it pretty simply and things
  361.         now work right.
  362.  
  363. DONE:    More general cleaning of the code, removal of redundant stuff, general
  364.         tightening up of things.
  365.  
  366. CHANGED:    The regular about box has been modified.  No longer just a simple
  367.         little Alert thing, but a little more neat...it's now a full dialog box
  368.         that takes advantage of some resources.
  369.  
  370. ADDED:    the prefs text dialog is a little more cosmetically pleasing (a nice
  371.         UserItemUPP now draws "grouping boxes" around stuff).  But still, i know
  372.         i could overall better redo the prefs dialogs
  373.  
  374. REDONE:    printing routines.  modeled after Tom Bender's Tex-Edit+ 1.6.3 source.
  375.         most major change: a clone of the WE instance is now used instead of the
  376.         original (and then playing with it and risking the stability and
  377.         integrity of your we instance).  this has also allowed for things like
  378.         page numbering, and double-spaced printing!
  379.  
  380. ADDED:    Along the above, a printing prefs dialog has been added.  it's also pretty
  381.         neat cause it has icon/control arrow buttons to increment the margin sizes.
  382.  
  383. KNOWN BUGS:    These are 2 known bugs in the shell (tho there might and probably are more
  384.         albiet hopefully the rest are subtle bugs that'll eventually be weeded out).
  385.         1.  the topic popup menu in the prefs dialogs truncates.  before the printing
  386.         prefs dialog was added, the topic popup would display the full menu item text
  387.         to act as a "title header" to the dialog.  now, the popup "truncates" down
  388.         to just an arrow popup (a small thing).  no idea why this is happening.
  389.         2.  (and this is an old problem, but i now know the exact reason it's
  390.         happening) the text prefs size popup still acts funny.  If you enter an odd
  391.         size in the edit text (like 13, or any size not already on the popup menu),
  392.         when you click then release the size popup, the edit text reverts from being
  393.         13 (or whatever) to 9.  I know why it's happening, i just can't think
  394.         of a way to fix it (well, i think i can, but it's messy).  As for the
  395.         first known bug, i probably won't fix this.  I found some neat sample code
  396.         on how to impliment multi-pane dialogs (like in the CW prefs dialog).
  397.         I want to impliment this method of multi-pane dialogs in place of the current
  398.         method, so fixing this "bug" will be moot.
  399.         
  400. POSSIBLE BUG:  I dunno if this is a bug or just something isn't liking life, but
  401.         sometimes (not all the time, which is why this is difficult to track and
  402.         fix) when you're printing, if you try to hit cmd-. to cancel, sometimes
  403.         it'll cancel no problem, sometimes it gets the cancel message, but continues
  404.         to try to print...it's hard to track down and fix, but i think it might
  405.         be due in part to my idle procedure.
  406.  
  407. ADDED/MODIFIED:    I've rewritten (again) a bunch of window sizing routines.  First,
  408.         CreateWindow (and anything done to CreateWindow was also done to ShowClipboard
  409.         since they're pretty much identical functions...y'know, i ought to see
  410.         if i could remove all the redundant code and just have ShowClipboard
  411.         call CreateWindow...oops, i remember why i didn't do this, cause of how
  412.         i wanted the window to look...like the Finder's Show Clipboard, and due
  413.         to that, can't just call CreateWindow). ANYWAYS :)
  414.         All that hodge-podge hacking code i used to have to determine the ideal
  415.         window size has been replaced by a few functions that do it all for
  416.         me nice and neatly.  Plus, HsoiZoomWindow can now take advantage of these
  417.         new functions (HsoiCalcIdealWindowSize mostly) to create a standard state
  418.         for the window's to zoom to (upon zoomOut)...no more zooming the window
  419.         and totally filling up the screen!
  420.         
  421. •        (based upon this "ideal window size" stuff, i have an idea.  since the
  422.         size of the window is based upon printing stuff (like the size of the
  423.         printer paper and margin settings), i thought it'd be nice to save a
  424.         printer record in a custom resource in the document's rsrc fork.  if
  425.         the user reopened the document later, their printer settings could be
  426.         restored, their window size be the same, etc...a nice and cool thing to do.
  427.         but also, since window and printing stuff is based upon the margin
  428.         settings, this could all be an effort for nothing...basically, i'll have
  429.         to change everything so that the user can have a global margin setting
  430.         (as it is now) but also document specific margin settings.  that'd
  431.         really be prime and cool to do, but to impliment all this would require
  432.         such major changes to all of the code.  I do want to do it, but right now,
  433.         there are other things for/in the shell that are more important to do.
  434.         if this bugs someone a whole lot, lemme know and I'll see if i can
  435.         impliment it for another release of HAS, or i could let them know the logic
  436.         and method(s) for implimenting such a thing.
  437.  
  438. FIXED:    In HsoiDoMenuCommand(), under case mEdit, i had it such that if FrontWindow() == nil
  439.         to just break...saved some overhead of going through the rest of the calls to
  440.         just find out later you'd return (could save some time due to jump table access, etc).
  441.         Well, this was fine and good cause i was originally thinking to save the overhead
  442.         cause with no window, you couldn't edit anything anyways.  Well, this was my
  443.         reasoning before i added the Show Clipboard command to the Edit menu. :)  With
  444.         this setup, even if the Show Clipboard item was enabled, it'd do nothing, and
  445.         that's silly.  So, i fixed the DoMenuCommand-case mEdit stuff so that old
  446.         integrity remained, but the Show Clipboard stuff could now happen.
  447.  
  448. ADDED:    A VBL task of a spinning/animated cursor!  it's pretty groovy!  derrived from
  449.         Inside Macintosh:Processes (there was some sample code).  i've stuck calls to
  450.         it at very intensive times, such as file reading in and writing out and
  451.         times when certain WASTE functions like WECopy, WEPaste, WEInsert, etc.
  452.         Also, a lot of modification had to be done to get this to work on PowerMacs.
  453.         That's been done in a happy way and things should compile and run just peachy
  454.         on either 68k or PPC Macs.
  455.  
  456. FIXED:    Had a bug in the HsoiShowClipboard() function.  if the clipboard window had
  457.         been shown already (and had something on it) then the clipboard window was
  458.         shown again but this time the scrap was empty/unknown, the clipboard window
  459.         would then show up with the previous contents on it!  not good!  just added
  460.         code to make sure that if the scrap was empty to make sure the clipboar
  461.         window's WE instance was deleted anyways.
  462.  
  463. KNOWN BUG:    I dunno who to classify as "responsible" for this bug.  When testing my
  464.         VBL spinning cursor, I wanted to create a HUGE file to read in (long time to
  465.         read in meant for sure my VBL task would run cause i was then installing my
  466.         VBL cursor only around HsoiCreateWindow).  To make this file, I took my
  467.         help document, select all, copy, move to the end of the file, paste, select all,
  468.         copy, etc etc.  Worked fine.  When i had a file about 850k (700k text, 150k
  469.         resources), i couldn't do this anymore!  After tracing down the problem, it's
  470.         in WECopy() when PutScrap() is called...PutScrap returned memFullErr (-108)
  471.         hence stuff failed, the clipboard was already zeroed out, and we "lost" our
  472.         copy (and hence ability to paste anything).  But who's fault/problem is this?
  473.         mine?  WASTEs?  I do use temporary memory, but perhaps that's not enough.
  474.         I tried jacking the app's memory partition WAY up..and then things worked, but
  475.         lord, that hogged a LOT of memory (both in my app heap and the system heap
  476.         for such a huge scrap).  So, it's not really WASTE's problem, but perhaps I ought
  477.         to impliment something in my copy/paste/cut/clear routines to check for
  478.         errors, esp. memFullErr and if so, throw up an error explaining the problem and
  479.         what they can do (quit, increase memory, do it again)
  480.     
  481. ADDED:    A Windows menu.  allows windows to be stacked or tiled.  also creates a running
  482.         list of all the open windows.  based upon code by Scott Knaster and Keith Rollin
  483.         (with lots of modifications).
  484.         
  485. REDONE:    Again....the HsoiAdjustMenus() function.  i broke it down somewhat for much
  486.         easier management.  Now different cases are handled differently and, IMHO, a little
  487.         better overall.
  488.  
  489. UPDATED:    Moved to WASTE 1.2a5.
  490.  
  491. UPDATED:    Moved to CW8 Academic/Gold.  However, using the 1.4 IDE...tho i think the
  492.         1.5b2 IDe is WAY cool, I don't want to use it yet until it's final and stable
  493.         (what good is a compiler that crashes and leaks on you?).  When the netborne
  494.         patch is released, i will move to 1.5.  Besides, to facilitate all this, Metrowerks
  495.         did make it so that the 1.4 and 1.5 stuff is compatabile with each other.
  496.         nice thing!  kudos to Metrowerks for making our lives a little less hellish
  497.         than it already might be, and giving us the ability to have a little fun :)
  498.         
  499. FIXED:    Some problems in the About box...needed to detach the resource handles before
  500.         i used them.  However, tho i can work fine on 68k Macs, on PowerMacs, you can
  501.         display the about box once, but the next time you do, crashola.  type 3 error,
  502.         illegal instruction.  still can't find the reason...working on it.
  503.         
  504. FIXED:    certain cmd-key combos were getting mapped to the screen, not the menus!
  505.         i think i might know the problem...i used to check if (isCmdKey && key > 0x32)
  506.         to get printable characters....well, 0x32 is the character '2'.  however,
  507.         in decimal, 32 is the space character (hex 0x20).  if i remember right, this
  508.         was code based upon/from Gary Little's System 7 book...i think it's a boo
  509.         boo and probably accidentally mixed the decimal and hex values up.  now,
  510.         anything that is a cmd-key with a printable character is mapped to the menus
  511.  
  512. FIXED:    added a line in HsoiDoContentClick so that dialog windows and DA windows
  513.         would not fall through into the WEClick stuff...that can cause some serious
  514.         problems!  we also check to make sure the WE instance is valid (!nil) before
  515.         proceeding
  516.  
  517. REMOVED:    the HsoiBringUpDialogSoDeactivateFrontWindow/DownDialogUpWindow stuff.
  518.         the name was too damn long and the function was just the same as going:
  519.         HsoiDoActivate( true/false, FrontWindow() );  so, it was silly.  all
  520.         calls have been replaced and things should be neater now.
  521.  
  522. FIXED:    some potential bad problems with HsoiReadTextFile().  before WEInsert()
  523.         was called, the style and soup handles were getting locked.  but in
  524.         a previous statement, there was the possibility of those handles getting
  525.         set to NIL and then possibly passing a nil handle to HLock.  the memory
  526.         manager wouldn't like that.
  527.         
  528. FIXED:    another problem with HsoiReadTextFile().  the forkRefNum's never got
  529.         set to zero upon the fork being closed.  this was a problem since
  530.         at the end of the function, we check if the refNum is > 0 and then
  531.         close the fork if it is.  this was setting up a situation where the fork could
  532.         have been closed 2 times.  again, not a good thing.  fixed by making sure
  533.         that any time the files were closed before the funtion's end clean up
  534.         stuff was called, the refNum was set to zero immediately after calling
  535.         the close on the fork.  Both this and the previous bug fix were found
  536.         by Chris Thomas who was using the WASTE Demo app...and since that was
  537.         copy/pasted code from HAS, I had to fix it in here also.
  538.  
  539. FIXED:    A bug in Michael Kamprath's WASTE Object Handlers's sound handler.  the
  540.         routine, SoundIsPlaying() had a not operator (!) in an if statement that
  541.         was wrong...the function then checked and returned improperly.  this
  542.         also required adding a not operator to the CheckSoundStatus() function
  543.         to make that one work right.  All things now seem to be working right,
  544.         the sound menu adjusts correctly, life seems good (but i'm currently
  545.         waiting to hear back from Michael about his thoughts on the change/fix)
  546.         
  547. FIXED:    a dumb bug (ah, the fun of copy and paste) where in the clipboard window's
  548.         menu adjustor code that the ability to record a new sound was enabled.
  549.         it should never be enabled since this is the clipboard window!
  550.  
  551. FIXED:    forgot that if we don't have a prefs file, we need to write one!  so, in
  552.         HsoiInitPrefs, if sNewFile, gWritePrefs = true.  oops.
  553.  
  554. ADDED:    Text to Speech capabilities.  based upon Tom Bender's Tex-Edit+ 1.6.3
  555.         code (note the user-level similarities...pretty much exactly the same thing.
  556.         code level similarities are high, but i did have to modify a bunch to
  557.         get it to work in C).  made a few changes (both user and code level), most
  558.         notably is a more robust dialog filter.
  559.         
  560. FIXED:    a bug where if the Clipboard window was open but was not front window (and
  561.         just whatever other kind of window was in front), if the clipboard window
  562.         was brought to the front by clicking on it, it would not update the contents
  563.         of the window (i.e. if there was something new on the clipboard, clicking it
  564.         to the front would not have the new scrap contents, but would contain the
  565.         old scrap contents)
  566.         
  567. FIXED:    Along with the above fix, it added another bug in the mouseDown event
  568.         handler (for content clicks).  if the clipboard window was front and
  569.         you clicked in it, it would redraw instead of selecting a word.  fixed.
  570.  
  571. FIXED:    If a window with a WASTE instance is front, it is read-only (for whatever
  572.         reason: ttro, Clipboard window, toggled in the Features menu, etc),
  573.         due to precompiler directives the caret is hid (in a read-only instance),
  574.         and we have speech turned on, then "Speak from Cursor" is disabled since
  575.         there can never be a caret in the window from which to speak from.
  576.         
  577. --------- Known Bugs ----------
  578.  
  579. This probably isn't a complete list, but it's something...
  580.  
  581. •    trying to cancel printing with cmd-. doesn't always work...it seems that the cancel
  582.     gets picked up, but then is ignored.  This is also a bug i found in Tex-Edit+ 1.6.3
  583.     (since the code was based upon that).  so maybe if Tom fixes his, or I fix, let
  584.     the other know.
  585.  
  586. •    the topic popup in the prefs dialog(s) truncates when a new dialog is brought up.
  587.     not a bug worth pursuing since the prefs code will soon be totally rewritten to
  588.     have multipane dialogs with icons, etc (like the CW prefs dialog).
  589.  
  590. •    in the text prefs, the size popup and edit box:  put an "odd" size in the edit
  591.     box, popup the menu, select nothing (or the appended new/odd size) and then
  592.     the number in the edit box changes to 9 (the first regular item in the popup menu)
  593.     
  594. •    during some HFS drags (drag a Finder icon into an open window), freezes or crashes
  595.     occur.  this bug is within (as far as i could tell) the WASTE Object Handler code,
  596.     something with the GetFileIcon stuff.  Also, reading in big PICTs seemed to cause
  597.     some same similar problems...perhaps shortcomings with the Scrap Manager and
  598.     lack of memory in the system heap.
  599.  
  600. •    running native PPC code on a PowerMac, you occasionally get type 3 errors.  It seems
  601.     that it only happens when dialogs are brought up.  I've had it happen when the
  602.     regular about box is brought up the second time (first time works ok), when alerts
  603.     come up.  It seems it might be linked to my dialog filters (especially ones that
  604.     use the hsoiMyStandardDialogFilter), but I don't have the facilities to adequately
  605.     track it down (i.e. I don't own a PowerMac).
  606.  
  607. •    A type 3 error also occurs when you are running native PPC code on a PowerMac, you
  608.     have speech on, you're speaking text, and you're hiliting by word (none and by
  609.     sentence seem to work ok).  I think this problem has to do with the A5 world. but
  610.     strangely, it seems that Tom Bender's same code works fine on PowerMacs...
  611.